home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C++ für Kids
/
C++ for kids.iso
/
SETUP
/
US
/
CBUILDER
/
DATA.Z
/
WS2SPI.H
< prev
next >
Wrap
C/C++ Source or Header
|
1997-02-13
|
19KB
|
964 lines
/* WS2SPI.H -- definitions to be used with the WinSock service provider.
*
* This header file corresponds to version 2.2.x of the WinSock SPI
* specification.
*
* This file includes parts which are Copyright (c) 1982-1986 Regents
* of the University of California. All rights reserved. The
* Berkeley Software License Agreement specifies the terms and
* conditions for redistribution.
*/
#ifndef _WINSOCK2SPI_
#define _WINSOCK2SPI_
#pragma option -b
/*
* Ensure structures are packed consistently.
*/
#pragma option -b.
#include <pshpack4.h>
#pragma option -b
/*
* Pull in WINSOCK2.H if necessary
*/
#ifndef _WINSOCK2API_
#pragma option -b.
#include <winsock2.h>
#pragma option -b
#endif /* _WINSOCK2API_ */
#define WSPDESCRIPTION_LEN 255
typedef struct WSPData {
WORD wVersion;
WORD wHighVersion;
WCHAR szDescription[WSPDESCRIPTION_LEN+1];
} WSPDATA, FAR * LPWSPDATA;
typedef struct _WSATHREADID {
HANDLE ThreadHandle;
DWORD Reserved;
} WSATHREADID, FAR * LPWSATHREADID;
/*
* SPI function linkage.
*/
#define WSPAPI WSAAPI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Pointer to a blocking callback. A pointer to a blocking callback is
* returned from the WPUQueryBlockingCallback() upcall. Note that this
* function's signature is not identical to an application's blocking
* hook function.
*/
typedef
BOOL
(CALLBACK FAR * LPBLOCKINGCALLBACK)(
DWORD dwContext
);
/*
* Pointer to a user APC function. This is used as a parameter to the
* WPUQueueUserApc() upcall. Note that this function's signature is not
* identical to an application's completion routine.
*/
typedef
VOID
(CALLBACK FAR * LPWSAUSERAPC)(
DWORD dwContext
);
/*
* Pointers to the individual entries in a service provider's proc table.
*/
typedef
SOCKET
(WSPAPI * LPWSPACCEPT)(
SOCKET s,
struct sockaddr FAR * addr,
LPINT addrlen,
LPCONDITIONPROC lpfnCondition,
DWORD dwCallbackData,
LPINT lpErrno
);
typedef
INT
(WSPAPI * LPWSPADDRESSTOSTRING)(
LPSOCKADDR lpsaAddress,
DWORD dwAddressLength,
LPWSAPROTOCOL_INFOW lpProtocolInfo,
LPWSTR lpszAddressString,
LPDWORD lpdwAddressStringLength,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPASYNCSELECT)(
SOCKET s,
HWND hWnd,
unsigned int wMsg,
long lEvent,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPBIND)(
SOCKET s,
const struct sockaddr FAR * name,
int namelen,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPCANCELBLOCKINGCALL)(
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPCLEANUP)(
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPCLOSESOCKET)(
SOCKET s,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPCONNECT)(
SOCKET s,
const struct sockaddr FAR * name,
int namelen,
LPWSABUF lpCallerData,
LPWSABUF lpCalleeData,
LPQOS lpSQOS,
LPQOS lpGQOS,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPDUPLICATESOCKET)(
SOCKET s,
DWORD dwProcessId,
LPWSAPROTOCOL_INFOW lpProtocolInfo,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPENUMNETWORKEVENTS)(
SOCKET s,
WSAEVENT hEventObject,
LPWSANETWORKEVENTS lpNetworkEvents,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPEVENTSELECT)(
SOCKET s,
WSAEVENT hEventObject,
long lNetworkEvents,
LPINT lpErrno
);
typedef
BOOL
(WSPAPI * LPWSPGETOVERLAPPEDRESULT)(
SOCKET s,
LPWSAOVERLAPPED lpOverlapped,
LPDWORD lpcbTransfer,
BOOL fWait,
LPDWORD lpdwFlags,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPGETPEERNAME)(
SOCKET s,
struct sockaddr FAR * name,
LPINT namelen,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPGETSOCKNAME)(
SOCKET s,
struct sockaddr FAR * name,
LPINT namelen,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPGETSOCKOPT)(
SOCKET s,
int level,
int optname,
char FAR * optval,
LPINT optlen,
LPINT lpErrno
);
typedef
BOOL
(WSPAPI * LPWSPGETQOSBYNAME)(
SOCKET s,
LPWSABUF lpQOSName,
LPQOS lpQOS,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPIOCTL)(
SOCKET s,
DWORD dwIoControlCode,
LPVOID lpvInBuffer,
DWORD cbInBuffer,
LPVOID lpvOutBuffer,
DWORD cbOutBuffer,
LPDWORD lpcbBytesReturned,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
);
typedef
SOCKET
(WSPAPI * LPWSPJOINLEAF)(
SOCKET s,
const struct sockaddr FAR * name,
int namelen,
LPWSABUF lpCallerData,
LPWSABUF lpCalleeData,
LPQOS lpSQOS,
LPQOS lpGQOS,
DWORD dwFlags,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPLISTEN)(
SOCKET s,
int backlog,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPRECV)(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesRecvd,
LPDWORD lpFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPRECVDISCONNECT)(
SOCKET s,
LPWSABUF lpInboundDisconnectData,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPRECVFROM)(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesRecvd,
LPDWORD lpFlags,
struct sockaddr FAR * lpFrom,
LPINT lpFromlen,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPSELECT)(
int nfds,
fd_set FAR * readfds,
fd_set FAR * writefds,
fd_set FAR * exceptfds,
const struct timeval FAR * timeout,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPSEND)(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPSENDDISCONNECT)(
SOCKET s,
LPWSABUF lpOutboundDisconnectData,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPSENDTO)(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesSent,
DWORD dwFlags,
const struct sockaddr FAR * lpTo,
int iTolen,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
LPWSATHREADID lpThreadId,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPSETSOCKOPT)(
SOCKET s,
int level,
int optname,
const char FAR * optval,
int optlen,
LPINT lpErrno
);
typedef
int
(WSPAPI * LPWSPSHUTDOWN)(
SOCKET s,
int how,
LPINT lpErrno
);
typedef
SOCKET
(WSPAPI * LPWSPSOCKET)(
int af,
int type,
int protocol,
LPWSAPROTOCOL_INFOW lpProtocolInfo,
GROUP g,
DWORD dwFlags,
LPINT lpErrno
);
typedef
INT
(WSPAPI * LPWSPSTRINGTOADDRESS)(
LPWSTR AddressString,
INT AddressFamily,
LPWSAPROTOCOL_INFOW lpProtocolInfo,
LPSOCKADDR lpAddress,
LPINT lpAddressLength,
LPINT lpErrno
);
/*
* A service provider proc table. This structure is returned by value
* from the service provider's WSPStartup() entrypoint.
*/
typedef struct _WSPPROC_TABLE {
LPWSPACCEPT lpWSPAccept;
LPWSPADDRESSTOSTRING lpWSPAddressToString;
LPWSPASYNCSELECT lpWSPAsyncSelect;
LPWSPBIND lpWSPBind;
LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
LPWSPCLEANUP lpWSPCleanup;
LPWSPCLOSESOCKET lpWSPCloseSocket;
LPWSPCONNECT lpWSPConnect;
LPWSPDUPLICATESOCKET lpWSPDuplicateSocke